package org.jiuling.aliyun.oss.client.enums;

/**
 * 端点枚举
 * @author 紫灵
 * @date 2024年06月15日 22时58分29秒
 */
public enum EndpointEnum {

    // 公共云下OSS Region和Endpoint对照表
    CN_HANGZHOU("华东1（杭州）","cn-hangzhou","oss-cn-hangzhou","oss-cn-hangzhou.aliyuncs.com","oss-cn-hangzhou-internal.aliyuncs.com"),
    CN_SHANGHAI("华东2（上海）","cn-shanghai","oss-cn-shanghai","oss-cn-shanghai.aliyuncs.com","oss-cn-shanghai-internal.aliyuncs.com"),
    CN_NANJING("华东5（南京-本地地域）","cn-nanjing","oss-cn-nanjing","oss-cn-nanjing.aliyuncs.com","oss-cn-nanjing-internal.aliyuncs.com"),
    CN_FUZHOU("华东6（福州-本地地域）","cn-fuzhou","oss-cn-fuzhou","oss-cn-fuzhou.aliyuncs.com","oss-cn-fuzhou-internal.aliyuncs.com"),
    CN_WUHAN("华中1（武汉-本地地域）","cn-wuhan","oss-cn-wuhan","oss-cn-wuhan-lr.aliyuncs.com","oss-cn-wuhan-lr-internal.aliyuncs.com"),
    CN_QINGDAO("华北1（青岛）","cn-qingdao","oss-cn-qingdao","oss-cn-qingdao.aliyuncs.com","oss-cn-qingdao-internal.aliyuncs.com"),
    CN_BEIJING("华北2（北京）","cn-beijing","oss-cn-beijing","oss-cn-beijing.aliyuncs.com","oss-cn-beijing-internal.aliyuncs.com"),
    CN_ZHANGJIAKOU("华北 3（张家口）","cn-zhangjiakou","oss-cn-zhangjiakou","oss-cn-zhangjiakou.aliyuncs.com","oss-cn-zhangjiakou-internal.aliyuncs.com"),
    CN_HUHEHAOTE("华北5（呼和浩特）","cn-huhehaote","oss-cn-huhehaote","oss-cn-huhehaote.aliyuncs.com","oss-cn-huhehaote-internal.aliyuncs.com"),
    CN_WULANCHABU("华北6（乌兰察布）","cn-wulanchabu","oss-cn-wulanchabu","oss-cn-wulanchabu.aliyuncs.com","oss-cn-wulanchabu-internal.aliyuncs.com"),
    CN_SHENZHEN("华南1（深圳）","cn-shenzhen","oss-cn-shenzhen","oss-cn-shenzhen.aliyuncs.com","oss-cn-shenzhen-internal.aliyuncs.com"),
    CN_HEYUAN("华南2（河源）","cn-heyuan","oss-cn-heyuan","oss-cn-heyuan.aliyuncs.com","oss-cn-heyuan-internal.aliyuncs.com"),
    CN_GUANGZHOU("华南3（广州）","cn-guangzhou","oss-cn-guangzhou","oss-cn-guangzhou.aliyuncs.com","oss-cn-guangzhou-internal.aliyuncs.com"),
    CN_CHENGDU("西南1（成都）","cn-chengdu","oss-cn-chengdu","oss-cn-chengdu.aliyuncs.com","oss-cn-chengdu-internal.aliyuncs.com"),
    CN_HONGKONG("中国香港","cn-hongkong","oss-cn-hongkong","oss-cn-hongkong.aliyuncs.com","oss-cn-hongkong-internal.aliyuncs.com"),
    US_WEST_1("美国（硅谷）①","us-west-1","oss-us-west-1","oss-us-west-1.aliyuncs.com","oss-us-west-1-internal.aliyuncs.com"),
    US_EAST_1("美国（弗吉尼亚）①","us-east-1","oss-us-east-1","oss-us-east-1.aliyuncs.com","oss-us-east-1-internal.aliyuncs.com"),
    AP_NORTHEAST_1("日本（东京）①","ap-northeast-1","oss-ap-northeast-1","oss-ap-northeast-1.aliyuncs.com","oss-ap-northeast-1-internal.aliyuncs.com"),
    AP_SOUTHEAST_1("韩国（首尔）","ap-northeast-2","oss-ap-northeast-2","oss-ap-northeast-2.aliyuncs.com","oss-ap-northeast-2-internal.aliyuncs.com"),
    OSS_AP_SOUTHEAST_1("新加坡①","ap-southeast-1","oss-ap-southeast-1","oss-ap-southeast-1.aliyuncs.com","oss-ap-southeast-1-internal.aliyuncs.com"),
    AP_SOUTHEAST_2("澳大利亚（悉尼）①","ap-southeast-2","oss-ap-southeast-2","oss-ap-southeast-2.aliyuncs.com","oss-ap-southeast-2-internal.aliyuncs.com"),
    AP_SOUTHEAST_3("马来西亚（吉隆坡）①","ap-southeast-3","oss-ap-southeast-3","oss-ap-southeast-3.aliyuncs.com","oss-ap-southeast-3-internal.aliyuncs.com"),
    AP_SOUTHEAST_5("印度尼西亚（雅加达）①","ap-southeast-5","oss-ap-southeast-5","oss-ap-southeast-5.aliyuncs.com","oss-ap-southeast-5-internal.aliyuncs.com"),
    AP_SOUTHEAST_6("菲律宾（马尼拉）","ap-southeast-6","oss-ap-southeast-6","oss-ap-southeast-6.aliyuncs.com","oss-ap-southeast-6-internal.aliyuncs.com"),
    AP_SOUTHEAST_7("泰国（曼谷）","ap-southeast-7","oss-ap-southeast-7","oss-ap-southeast-7.aliyuncs.com","oss-ap-southeast-7-internal.aliyuncs.com"),
    AP_SOUTH_1("印度（孟买）①","ap-south-1","oss-ap-south-1","oss-ap-south-1.aliyuncs.com","oss-ap-south-1-internal.aliyuncs.com"),
    EU_CENTRAL_1("德国（法兰克福）①","eu-central-1","oss-eu-central-1","oss-eu-central-1.aliyuncs.com","oss-eu-central-1-internal.aliyuncs.com"),
    EU_WEST_1("英国（伦敦）","eu-west-1","oss-eu-west-1","oss-eu-west-1.aliyuncs.com","oss-eu-west-1-internal.aliyuncs.com"),
    ME_EAST_1("阿联酋（迪拜）①","me-east-1","oss-me-east-1","oss-me-east-1.aliyuncs.com","oss-me-east-1-internal.aliyuncs.com"),
    RG_CHINA_MAINLAND("无地域属性（中国内地）",null,"oss-rg-china-mainland","oss-rg-china-mainland.aliyuncs.com",null),

    // 金融云下Region和Endpoint对照表
    CN_HZJBP_A("华东1金融云",null,"oss-cn-hzjbp",null,"oss-cn-hzjbp-a-internal.aliyuncs.com"),
    CN_HZJBP_B("华东1金融云",null,"oss-cn-hzjbp",null,"oss-cn-hzjbp-b-internal.aliyuncs.com"),
    CN_SHANGHAI_FINANCE_1("华东2金融云",null,"oss-cn-shanghai-finance-1",null,"oss-cn-shanghai-finance-1-internal.aliyuncs.com"),
    CN_BEIJING_FINANCE_1("华北2 金融云（邀测）",null,"oss-cn-beijing-finance-1",null,"oss-cn-beijing-finance-1-internal.aliyuncs.com"),
    CN_SHENZHEN_FINANCE_1("华南1金融云",null,"oss-cn-shenzhen-finance-1",null,"oss-cn-shenzhen-finance-1-internal.aliyuncs.com"),
    CN_HZFINANC("杭州金融云公网",null,"oss-cn-hzfinance","oss-cn-hzfinance.aliyuncs.com","oss-cn-hzfinance-internal.aliyuncs.com"),
    CN_SHANGHAI_FINANCE_1_PUB("上海金融云公网",null,"oss-cn-shanghai-finance-1-pub","oss-cn-shanghai-finance-1-pub.aliyuncs.com","oss-cn-shanghai-finance-1-pub-internal.aliyuncs.com"),
    CN_SZFINANCE("深圳金融云公网",null,"oss-cn-szfinance","oss-cn-szfinance.aliyuncs.com","oss-cn-szfinance-internal.aliyuncs.com"),
    CN_BEIJING_FINANCE_1_PUB("北京金融云公网",null,"oss-cn-beijing-finance-1-pub","oss-cn-beijing-finance-1-pub.aliyuncs.com","oss-cn-beijing-finance-1-pub-internal.aliyuncs.com");


    /** 区域 */
    private final String region;
    /** 阿里云通用Region ID */
    private final String aliYunRegionId;
    /** OSS专用Region ID */
    private final String ossRegionId;
    /** 外网Endpoint */
    private final String externalEndpoint;
    /** 内网Endpoint */
    private final String insideEndpoint;

    public String getRegion() {
        return region;
    }

    public String getAliYunRegionId() {
        return aliYunRegionId;
    }

    public String getOssRegionId() {
        return ossRegionId;
    }

    public String getExternalEndpoint() {
        return externalEndpoint;
    }

    public String getInsideEndpoint() {
        return insideEndpoint;
    }

    EndpointEnum(String region, String aliYunRegionId, String ossRegionId, String externalEndpoint, String insideEndpoint) {
        this.region = region;
        this.aliYunRegionId = aliYunRegionId;
        this.ossRegionId = ossRegionId;
        this.externalEndpoint = externalEndpoint;
        this.insideEndpoint = insideEndpoint;
    }
}
